package cap7;

import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import javax.swing.*;
class GUI_CtaCteBancaria extends JFrame {
	//Objetos del problema y objetos gráficos 
	private CtaCteBancaria cuenta;
	private Container contenedor;
	private JPanel panelAcciones, panelSaldo;
	private JButton botonConsultar,botonExt, botonDep;
	public GUI_CtaCteBancaria(CtaCteBancaria cta) { 
		//Establece los atributos del frame
		super("Cuenta Bancaria "+cta.obtenerCodigo());
		setSize(210, 210);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		// Inicializa la cuenta bancaria
		cuenta =cta;
		//Obtiene el panel de contenido y crea los paneles
		contenedor = getContentPane();	
		panelAcciones = new JPanel();	  
		panelSaldo = new JPanel();    
		//Crear los botones
		botonDep = new JButton(); 
		botonExt = new JButton();
		botonConsultar = new JButton();
		armarBotones();
		armarPaneles();
	}   
	private void armarBotones(){
		//Establece atributos de los botones y los vincula a oyentes
		botonDep.setText("Depositar");
		botonDep.setPreferredSize(new Dimension(124, 50));
		botonDep.setSize(150, 50);
		botonDep.setBorder 
		(BorderFactory.createCompoundBorder(
				new LineBorder(new java.awt.Color(0, 0, 0), 1, false),
				null));
		OyenteDepositar oDepositar = new OyenteDepositar();
		botonDep.addActionListener(oDepositar);

		botonExt.setText("Extraer");
		botonExt.setPreferredSize(new Dimension(124, 50));
		botonExt.setSize(150, 50);
		botonExt.setBorder    
		(BorderFactory.createCompoundBorder(
				new LineBorder(new java.awt.Color(0, 0, 0), 1, false),
				null));
		OyenteExtraer oExtraer = new OyenteExtraer();
		botonExt.addActionListener(oExtraer);     
		botonConsultar.setText("Consultar Saldo");
		botonConsultar.setPreferredSize(new Dimension(136, 30));
		botonConsultar.setSize(150, 30);
		botonConsultar.setBorder  (BorderFactory.createBevelBorder  
				(BevelBorder.LOWERED));
		OyenteConsultar oConsultar = new OyenteConsultar();
		botonConsultar.addActionListener(oConsultar);}
	private void armarPaneles() { 
		// Diagramado de los paneles
		contenedor.setLayout(new BorderLayout());
		panelAcciones.setBorder   
		(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
		panelAcciones.setPreferredSize(new Dimension(160, 130));
		panelAcciones.setSize(160, 125);
		//Agrega botones a los paneles	
		panelAcciones.add(botonDep);
		panelAcciones.add(botonExt);
		panelSaldo.add(botonConsultar);
		//Agrega los paneles al contenedor
		contenedor.add(panelAcciones, BorderLayout.NORTH);		
		contenedor.add(panelSaldo, BorderLayout.SOUTH);     }
	
	private class OyenteDepositar implements ActionListener {
		public void actionPerformed(ActionEvent event){
			float dep;
			String deposito;
			JOptionPane dialogo = new JOptionPane();
			deposito=dialogo.showInputDialog("Ingrese la cantidad a depositar" );
			if ((deposito != null) && (deposito.length() > 0)){
				dep = Float.parseFloat(deposito);
				dialogo.showMessageDialog(null,"Usted depositó " + dep+ " pesos","Depósito", JOptionPane.PLAIN_MESSAGE );
				cuenta.depositar(dep);}
			}
		}
		private class OyenteExtraer implements ActionListener {
			public void actionPerformed(ActionEvent event){
				float ext;
				String extraccion;
				JOptionPane dialogo = new JOptionPane();
				extraccion=dialogo.showInputDialog("Ingrese la cantidad a extraer" );  
				if ((extraccion != null) && (extraccion.length() > 0)){
					ext = Float.parseFloat(extraccion);
					if (cuenta.extraer(ext)){   	
						dialogo.showMessageDialog( null, 
								"Usted extrajo " + ext+ " pesos"," Extracción", 		JOptionPane.PLAIN_MESSAGE ); 
						cuenta.extraer(ext);}
					else 
						dialogo.showMessageDialog( null, 
								"Usted NO puede extraer esa cantidad",  "Advertencia",  
								JOptionPane.WARNING_MESSAGE ); }
			}
		}
		private class OyenteConsultar implements ActionListener {
			public void actionPerformed(ActionEvent event){
				JOptionPane dialogo = new JOptionPane();
				if (cuenta.obtenerSaldo()>=0)
					dialogo.showMessageDialog(null,  "Usted tiene un saldo de " + cuenta.obtenerSaldo()+
							" pesos","SALDO",dialogo.INFORMATION_MESSAGE ); 
				else                       
					dialogo.showMessageDialog(null, 
							"Usted está en descubierto en " + 
									(-1)*cuenta.obtenerSaldo() + " pesos",                            		"SALDO", JOptionPane.ERROR_MESSAGE );}
		}
		/**
		 * @param args
		 */
		public static void main(String[] args) {
			(new GUI_CtaCteBancaria(new CtaCteBancaria())).setVisible(true);

		}

	}
